'''1.
答：指向型注释文本是指通过指示箭头的注释方式对绘图区域的图形进行解释的文本，它一般使用线条连接说明点和箭头指向的注释文字；
无指向型注解文本是指单纯地使用文字的注释方式对绘图区域的图形进行说明的文本。
2.
答：坐标轴是用于定义坐标系的一组直线或曲线；标题是图表的名称，可以迅速地让读者理解图表要说明的内容；图例是一个列举的各组图形标识方式的方框图，
可以帮助用户明确每组图形代表的含义；网格是从坐标轴刻度开始的、贯穿绘图区域的若干条线，用于作为估算图形所示值的标准；
参考线是标记坐标轴上特殊值的一条直线；参考区域是标记坐标轴上特殊范围的一块区域；
注释文本是对图形的一些注释和说明；表格主要用于强调比较难理解的数据。
'''
#5-1
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 添加无指向型注释文本
def autolabel(rects):
    """在每个矩形条的上方附加一个文本标签，以显示其高度"""
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width() / 2, height + .5,
                 s='{}'.format(height),
                 ha='center', va='bottom')
labels = np.array(['语文', '数学', '英语', '物理', '化学', '生物'])
x = np.arange(0, labels.size)
y_men = np.array([85.5, 91, 72, 59, 66, 55])
y_women = np.array([94, 82, 89.5, 62, 49, 53])
bar_width = 0.35
# 绘制柱形图
bars_men = plt.bar(x - bar_width /2, y_men, width=bar_width, label='男生')
bars_women = plt.bar(x + bar_width /2, y_women,
width=bar_width, label='女生')
plt.xticks(x, labels)
plt.title('高二男生、女生的平均成绩')
plt.ylabel('平均成绩（分）')
autolabel(bars_men)
autolabel(bars_women)
plt.legend()
plt.show()
